#ifndef _DWMRICORE_POINT3F_H
#define _DWMRICORE_POINT3F_H

class CPoint3F
{
public:
	float m_x;
	float m_y;
	float m_z;

public:
	CPoint3F(void);
	CPoint3F(const float x, const float y, const float z);
	~CPoint3F(void);

	/* overwloading operators */
public:
	CPoint3F operator+(const CPoint3F &right);
	CPoint3F operator-(const CPoint3F &right);
	CPoint3F operator*(const float &left);
	CPoint3F operator/(const float &left);

	void Normalize();
	float Length() const;
};

typedef CPoint3F CVector3F;

float InnerProduct(const CVector3F &a, const CVector3F &b);
float InnerProduct(const CVector3F *a, const CVector3F *b);
float Distance(const CPoint3F &a, const CPoint3F &b);
float Distance(const CPoint3F *a, const CPoint3F *b);

void Normalize(CVector3F &v);
void Normalize(CVector3F *v);

#endif
